package mule.model;

//<editor-fold defaultstate="collapsed" desc="Imports">

import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import mule.model.enums.MuleOutfit;

//</editor-fold>

/**
 * The mule is the object that the player can place on their land in order to 
 * actually start producing with the properties they buy. Each mule can have an
 * outfit to increase a different resource gain.
 *
 * @author Stephen
 */
public class Mule 
{
    //<editor-fold defaultstate="collapsed" desc="Properties">

    private ObjectProperty<MuleOutfit> outfit;

    //</editor-fold>


    //<editor-fold defaultstate="collapsed" desc="Constructor">
    
    /**
     * Constructs a mule with a default NONE outfit
     */
    public Mule()
    {
    }

    //</editor-fold>


    //<editor-fold defaultstate="collapsed" desc="Getters and Setters">
    /**
     * Returns the mule's outfit as an object property, or sets it to NONE if
     * it doesn't currently have one.
     * 
     * @return the outfit of a mule as an object property
     */
    public ObjectProperty<MuleOutfit> outfitProperty()
    {
        if( outfit == null )
        {
            outfit = new SimpleObjectProperty( MuleOutfit.NONE );
        }

        return outfit;
    }

    /**
     * Returns an enumeration representation of a mule's outfit
     * 
     * @return the mule's outfit as a MuleOutfit object
     */
    public MuleOutfit getOutfit()
    {
        return outfitProperty().get();
    }

    /**
     * Sets the mule's outfit by passing in an enumeration type
     * 
     * @param outfit the outfit to put onto the mule
     */
    public void setOutfit( MuleOutfit outfit )
    {
        outfitProperty().set( outfit );
    }
    //</editor-fold>
}

